├── .gitignore ├── README.md ├── deobfuscator ├── Deobfuscator.js └── utils │ └── constants.js ├── images └── devtools.gif ├── index.js ├── input └── cf-main-challenge.js ├── output ├── deobfuscated_code copy.js └── deobfuscated_code.js ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cloudflare-main-challenge-deobfuscator 2 | A series of ast-manipulations to create more readable cloudflare script code. 3 | 4 | ## Features 5 | **Conversion of all strings:** 6 | from: 7 | ```js 8 | return g[b(_[72])][b(_[10])][b(_[74])][b(_[119])](h)===b(_[137]) 9 | ``` 10 | to: 11 | ```js 12 | return g.Object.prototype.toString.call(h) === "[object Array]"; 13 | ``` 14 | 15 | **Simplifying the function call:** 16 | from: 17 | ```js 18 | var m['foo'] = function (a,b) { 19 | return a + b; 20 | }, 21 | n = m; 22 | 23 | return n['foo'](a,b); 24 | ``` 25 | to: 26 | ```js 27 | var m['foo'] = function (a,b) { 28 | return a + b; 29 | }, 30 | n = m; 31 | 32 | return a + b; 33 | ``` 34 | **Simplifying the object props access:** 35 | from: 36 | ```js 37 | var e['foo'] = '300', 38 | g = e; 39 | 40 | F.width = g['foo'] 41 | ``` 42 | 43 | to: 44 | ```js 45 | var e['foo'] = '300', 46 | g = e; 47 | 48 | F.width = '300' 49 | ``` 50 | 51 | **Simplifying logical branches:** 52 | from: 53 | ```js 54 | if ('foo' === 'foo') { 55 | return bar; 56 | } 57 | ``` 58 | to: 59 | ```js 60 | return bar; 61 | ``` 62 | 63 | **Main control flow flattening conversion** 64 | 65 | 66 | ## usage 67 | ``` 68 | git clone https://github.com/rastvl/cloudflare-main-challenge-deobfuscator.git 69 | cd cloudflare-main-challenge-deobfuscator 70 | npm install 71 | ``` 72 | Paste the main challenge script into `input/cf-main-challenge.js` and then: 73 | ``` 74 | npm run start 75 | ``` 76 | 77 | ## ... 78 | In fact, this is all you need to understand the cloudflare code and prepare your environment to run it automatically. The code is a bit messy, there will be no refactoring) 79 | 80 | ## How to get main challenge script 81 | The easiest way to get the "main challenge" using devtools is to constantly pause the script execution on the cloudflare page until you come across the desired script: 82 | ![devtools](./images/devtools.gif) -------------------------------------------------------------------------------- /deobfuscator/Deobfuscator.js: -------------------------------------------------------------------------------- 1 | const parser = require('@babel/parser'); 2 | const traverse = require('@babel/traverse').default; 3 | const generate = require('@babel/generator').default; 4 | const t = require('@babel/types'); 5 | const beautify = require('js-beautify'); 6 | 7 | const { 8 | MAIN_ARRAY_NAME, 9 | SHUFFLE_ARRAY_FUNCTION_ARGS_LENGTH, 10 | MAIN_FOR_STATEMENT_TEST, 11 | chl_done_ref, 12 | chl_done_no_ref, 13 | no_chl_done, 14 | } = require('./utils/constants'); 15 | 16 | class Deobfuscator { 17 | constructor(sourceCode) { 18 | this._code = sourceCode; 19 | this._ast = parser.parse(sourceCode); 20 | this._mainArray = []; 21 | } 22 | 23 | deobfuscate() { 24 | this._evaluateBinaryPaths(); 25 | 26 | this._replaceStrings(); 27 | 28 | this._replaceProxyFunctions(); 29 | this._replaceProxyFunctions(); 30 | 31 | this._replaceObjectConstants(); 32 | this._replaceObjectConstants(); 33 | 34 | this._transformLogicalBranches(); 35 | 36 | this._convertBracketToDot(); 37 | 38 | // const output = this._getCodeWithoutCff(); 39 | 40 | const output = generate(this._ast).code; 41 | 42 | return beautify(output, { 43 | indent_size: 2, 44 | space_in_empty_paren: true, 45 | }); 46 | } 47 | 48 | _getMainArray() { 49 | traverse(this._ast, { 50 | AssignmentExpression: (path) => { 51 | const { node } = path; 52 | if ( 53 | t.isMemberExpression(node.left) && 54 | node.left.property.name === MAIN_ARRAY_NAME 55 | ) { 56 | const elementsArray = t.arrayExpression(node.right.elements).elements; 57 | 58 | elementsArray.forEach((el) => { 59 | this._mainArray.push(el.value); 60 | }); 61 | 62 | path.stop(); 63 | } 64 | }, 65 | }); 66 | } 67 | 68 | _replaceStrings() { 69 | if (this._mainArray.length === 0) { 70 | this._getMainArray(); 71 | } 72 | console.log('replacings strings 1/2...'); 73 | traverse(this._ast, { 74 | MemberExpression: (path) => { 75 | const { node } = path; 76 | 77 | if ( 78 | node.object.name === MAIN_ARRAY_NAME && 79 | t.isNumericLiteral(node.property) 80 | ) { 81 | path.replaceWith( 82 | t.stringLiteral(this._mainArray[node.property.value]) 83 | ); 84 | } 85 | }, 86 | }); 87 | 88 | this._replaceInnerStrings(); 89 | } 90 | 91 | static _getFirstBindingAssignment(binding) { 92 | let scope = binding.scope.parent; 93 | let resultPath; 94 | 95 | traverse( 96 | scope.block, 97 | { 98 | AssignmentExpression: (path) => { 99 | const { node } = path; 100 | 101 | if ( 102 | t.isIdentifier(node.left) && 103 | node.left.name === binding.identifier.name 104 | ) { 105 | resultPath = path; 106 | path.stop(); 107 | } 108 | }, 109 | }, 110 | scope, 111 | scope.path.parent 112 | ); 113 | 114 | return resultPath; 115 | } 116 | 117 | _setInnerArray(scope, scopeData) { 118 | scope.traverse(scope.block, { 119 | CallExpression: (path_) => { 120 | const node_ = path_.node; 121 | if ( 122 | node_.callee && 123 | t.isMemberExpression(node_.callee) && 124 | // !node_.callee.computed && 125 | t.isStringLiteral(node_.callee.object) && 126 | t.isIdentifier(node_.callee.property) && 127 | node_.callee.property.name === 'split' 128 | ) { 129 | const delimiter = node_.arguments[0].value; 130 | scopeData.array = node_.callee.object.value.split(delimiter); 131 | path_.stop(); 132 | } 133 | }, 134 | } 135 | ); 136 | } 137 | 138 | _shuffleInnerArray(scope, scopeData) { 139 | const shuffleArray = (shuffleIndex, offset, compExpr) => { 140 | const getString = (index) => { 141 | return scopeData.array[index - offset]; 142 | }; 143 | 144 | scopeData.getString = getString; 145 | 146 | // compExpr = compExpr.replaceAll(`${bindingFunctionName}(`, 'getString(') 147 | compExpr = compExpr.replaceAll(/parseint\(\w+\(/ig, 'parseInt(getString('); 148 | 149 | eval(` 150 | while(true) { 151 | try { 152 | const f = ${compExpr}; 153 | if (f === ${shuffleIndex}) break; 154 | else scopeData.array.push(scopeData.array.shift()); 155 | } catch(e) { 156 | scopeData.array.push(scopeData.array.shift()); 157 | } 158 | } 159 | `); 160 | }; 161 | 162 | let shuffleIndex, offset, compExpr; 163 | 164 | scope.traverse(scope.block, { 165 | CallExpression: (path_) => { 166 | const node_ = path_.node; 167 | if ( 168 | node_.arguments.length === SHUFFLE_ARRAY_FUNCTION_ARGS_LENGTH && 169 | t.isNumericLiteral(node_.arguments[1]) && 170 | t.isIdentifier(node_.arguments[0]) && 171 | node_.arguments[0].name === 'a' 172 | ) { 173 | shuffleIndex = node_.arguments[1].value; // + 1; // + 1? 174 | path_.stop(); 175 | } 176 | } 177 | }); 178 | 179 | scope.traverse(scope.block, { 180 | ReturnStatement: (path_) => { 181 | const node_ = path_.node; 182 | if ( 183 | node_.argument && 184 | t.isSequenceExpression(node_.argument) && 185 | t.isAssignmentExpression(node_.argument.expressions[0]) && 186 | t.isBinaryExpression(node_.argument.expressions[0].right) && 187 | node_.argument.expressions[0].right.operator === '-' && 188 | !isNaN(node_.argument.expressions[0].right.right.value) 189 | ) { 190 | offset = node_.argument.expressions[0].right.right.value; 191 | path_.stop(); 192 | } 193 | }, 194 | }); 195 | 196 | scope.traverse(scope.block, { 197 | IfStatement: (path_) => { 198 | const node_ = path_.node; 199 | if ( 200 | t.isSequenceExpression(node_.test) && 201 | t.isAssignmentExpression(node_.test.expressions[0]) && 202 | t.isBinaryExpression(node_.test.expressions[0].right) && 203 | t.isBinaryExpression(node_.test.expressions[0].right.left) && 204 | t.isBinaryExpression(node_.test.expressions[0].right.left.left) 205 | ) { 206 | compExpr = generate(node_.test.expressions[0].right).code; 207 | path_.stop(); 208 | } 209 | } 210 | }); 211 | 212 | shuffleArray(shuffleIndex, offset, compExpr); 213 | 214 | } 215 | 216 | _findScopeUid(path, scopeData) { 217 | let scope = path.scope; 218 | while(true) { 219 | this._setInnerArray(scope, scopeData); 220 | if (scopeData.array.length === 0) { 221 | scope = scope.parent; 222 | } else { 223 | break; 224 | } 225 | } 226 | return scope; 227 | } 228 | 229 | _replaceInnerStrings() { 230 | const scopeUidToData = new Map(); 231 | console.log('replacings strings 2/2...'); 232 | 233 | traverse(this._ast, { 234 | MemberExpression: (path) => { 235 | const { node } = path; 236 | if (t.isCallExpression(node.property) && 237 | node.property.arguments.length === 1 && 238 | t.isNumericLiteral(node.property.arguments[0]) 239 | ) { 240 | let callNode = node.property; 241 | 242 | const scopeData = { 243 | array: [], 244 | }; 245 | 246 | const currentScope = this._findScopeUid(path, scopeData); 247 | 248 | if (scopeUidToData.has(currentScope.uid)) { 249 | const scopeData = scopeUidToData.get(currentScope.uid); 250 | node.property = t.stringLiteral(scopeData.getString(parseInt(callNode.arguments[0].value))); 251 | } 252 | 253 | this._shuffleInnerArray( 254 | currentScope, 255 | scopeData 256 | ); 257 | 258 | scopeUidToData.set(currentScope.uid, scopeData); 259 | node.property = t.stringLiteral(scopeData.getString(parseInt(callNode.arguments[0].value))); 260 | } 261 | }, 262 | }); 263 | } 264 | 265 | _replaceProxyFunctions() { 266 | const scopeIdToBinaryOpPath = {}; 267 | 268 | console.log('Simplifying proxy functions...'); 269 | 270 | traverse(this._ast, { 271 | AssignmentExpression: (path) => { 272 | const { node } = path; 273 | 274 | // Proxy function 275 | if ( 276 | t.isFunctionExpression(node.right) && 277 | t.isMemberExpression(node.left) && 278 | (node.left.property.value || node.left.property.name) && 279 | node.right.body.body.length === 1 && 280 | t.isReturnStatement(node.right.body.body[0]) && 281 | (t.isBinaryExpression(node.right.body.body[0].argument) || 282 | t.isCallExpression(node.right.body.body[0].argument)) 283 | ) { 284 | // We find proxy function and fill in scopeIdToBinaryOpPath(scopeUID -> Map). 285 | // Key is created using the ID name and the property value(n['xyz'] = function ... -> key = n_xyz). 286 | // In this way we get a structure where each scope is mapped to a bindings. 287 | // In the next traversal, if we come across the use of the proxy function, 288 | // we will be able to get the right node by key to know which binary operator is being used. 289 | 290 | const proxyFnIdentifier = node.left.object.name; 291 | const proxyFnBinding = path.scope.getBinding(proxyFnIdentifier); 292 | 293 | const key = `${node.left.object.name}_${ 294 | node.left.property.value || node.left.property.name 295 | }`; 296 | 297 | if (scopeIdToBinaryOpPath[proxyFnBinding.scope.uid]) { 298 | scopeIdToBinaryOpPath[proxyFnBinding.scope.uid].set( 299 | key, 300 | node.right.body.body[0].argument 301 | ); 302 | } else { 303 | scopeIdToBinaryOpPath[proxyFnBinding.scope.uid] = new Map(); 304 | scopeIdToBinaryOpPath[proxyFnBinding.scope.uid].set( 305 | key, 306 | node.right.body.body[0].argument 307 | ); 308 | } 309 | 310 | // Cloudflare does something like that: 311 | // m['xyz'] = function ... ; 312 | // n = m; 313 | // n['xyz'](a, b) 314 | // So we need to find all the assignments and fill them with the right keys 315 | proxyFnBinding.referencePaths.forEach((refPath) => { 316 | if ( 317 | t.isAssignmentExpression(refPath.parentPath.node) && 318 | t.isIdentifier(refPath.parentPath.node.left) 319 | ) { 320 | const refBinding = refPath.scope.getBinding( 321 | refPath.parentPath.node.left.name 322 | ); 323 | const key = `${refPath.parentPath.node.left.name}_${ 324 | node.left.property.value || node.left.property.name 325 | }`; 326 | 327 | scopeIdToBinaryOpPath[refBinding.scope.uid].set( 328 | key, 329 | node.right.body.body[0].argument 330 | ); 331 | } 332 | }); 333 | } 334 | }, 335 | }); 336 | 337 | traverse(this._ast, { 338 | CallExpression: (path) => { 339 | const { node } = path; 340 | 341 | if (!t.isMemberExpression(node.callee)) return; 342 | 343 | const bindingName = node.callee.object.name || node.callee.object.value; 344 | const binding = path.scope.getBinding(bindingName); 345 | if (!binding) return; 346 | 347 | const bindingScopeId = binding.scope.uid; 348 | if (!bindingScopeId || !scopeIdToBinaryOpPath[bindingScopeId]) return; 349 | 350 | const bindingPropName = 351 | node.callee.property.value || node.callee.property.name; 352 | const key = `${bindingName}_${bindingPropName}`; 353 | 354 | const binaryOpPath = scopeIdToBinaryOpPath[bindingScopeId].get(key); 355 | 356 | if (t.isBinaryExpression(binaryOpPath)) { 357 | path.replaceWith( 358 | t.binaryExpression( 359 | binaryOpPath.operator, 360 | node.arguments[0], 361 | node.arguments[1] 362 | ) 363 | ); 364 | } /* else if (t.isCallExpression(binaryOpPath)) { 365 | // TODO: simplify function calls 366 | // path.replaceWith( 367 | // t.CallExpression(node.arguments[0], [ 368 | // ...node.arguments.filter((el, ix) => ix != 0), 369 | // ]) 370 | // ); 371 | } */ 372 | }, 373 | }); 374 | } 375 | 376 | _replaceObjectConstants() { 377 | const scopeIdToConstants = {}; 378 | 379 | console.log('Simplifying proxy constants...'); 380 | 381 | traverse(this._ast, { 382 | AssignmentExpression: (path) => { 383 | const { node } = path; 384 | 385 | if ( 386 | t.isMemberExpression(node.left) && 387 | t.isLiteral(node.right) && 388 | node.left.object 389 | ) { 390 | const constantIdentifier = node.left.object.name; 391 | if (!constantIdentifier) return; 392 | 393 | const constantBinding = path.scope.getBinding(constantIdentifier); 394 | if (!constantBinding) return; 395 | 396 | const key = `${node.left.object.name}_${ 397 | node.left.property.value || node.left.property.name 398 | }`; 399 | 400 | if (scopeIdToConstants[constantBinding.scope.uid]) { 401 | scopeIdToConstants[constantBinding.scope.uid].set( 402 | key, 403 | node.right.value 404 | ); 405 | } else { 406 | scopeIdToConstants[constantBinding.scope.uid] = new Map(); 407 | scopeIdToConstants[constantBinding.scope.uid].set( 408 | key, 409 | node.right.value 410 | ); 411 | } 412 | 413 | constantBinding.referencePaths.forEach((refPath) => { 414 | if ( 415 | t.isAssignmentExpression(refPath.parentPath.node) && 416 | t.isIdentifier(refPath.parentPath.node.left) 417 | ) { 418 | // ctrl+C ctrl+V... Sorry 419 | const refBinding = refPath.scope.getBinding( 420 | refPath.parentPath.node.left.name 421 | ); 422 | const key = `${refPath.parentPath.node.left.name}_${ 423 | node.left.property.value || node.left.property.name 424 | }`; 425 | 426 | if (scopeIdToConstants[refBinding.scope.uid]) { 427 | scopeIdToConstants[refBinding.scope.uid].set( 428 | key, 429 | node.right.value 430 | ); 431 | } else { 432 | scopeIdToConstants[refBinding.scope.uid] = new Map(); 433 | scopeIdToConstants[refBinding.scope.uid].set( 434 | key, 435 | node.right.value 436 | ); 437 | } 438 | } 439 | }); 440 | } 441 | }, 442 | }); 443 | 444 | traverse(this._ast, { 445 | MemberExpression: (path) => { 446 | const { node } = path; 447 | 448 | // Can't replace lvalue 449 | if ( 450 | t.isAssignmentExpression(path.parentPath.node) && 451 | path.parentPath.node.left === node 452 | ) { 453 | return; 454 | } 455 | 456 | if (!node.object) return; 457 | 458 | const bindingName = node.object.name; 459 | if (!bindingName) return; 460 | 461 | const binding = path.scope.getBinding(bindingName); 462 | if (!binding) return; 463 | 464 | const bindingScopeId = binding.scope.uid; 465 | if (!bindingScopeId || !scopeIdToConstants[bindingScopeId]) return; 466 | 467 | const bindingPropName = node.property.value || node.property.name; 468 | const key = `${bindingName}_${bindingPropName}`; 469 | 470 | const constantValue = scopeIdToConstants[bindingScopeId].get(key); 471 | if (!constantValue) return; 472 | 473 | switch (typeof constantValue) { 474 | case 'string': 475 | path.replaceWith(t.stringLiteral(constantValue)); 476 | break; 477 | case 'number': 478 | path.replaceWith(t.numericLiteral(constantValue)); 479 | break; 480 | default: 481 | break; 482 | } 483 | }, 484 | }); 485 | } 486 | 487 | _transformLogicalBranches() { 488 | console.log('Transforming logical branches...'); 489 | traverse(this._ast, { 490 | 'ConditionalExpression|IfStatement': (path) => { 491 | const { node } = path; 492 | let { consequent } = node; 493 | let { alternate } = node; 494 | 495 | const testNodePath = path.get('test'); 496 | const testNodeResult = testNodePath.evaluateTruthy(); 497 | 498 | if (testNodeResult === undefined) return; 499 | 500 | if (testNodeResult === true) { 501 | if (t.isBlockStatement(consequent)) { 502 | consequent = consequent.body; 503 | } 504 | path.replaceWithMultiple(consequent); 505 | } else { 506 | if (alternate != null) { 507 | if (t.isBlockStatement(alternate)) { 508 | alternate = alternate.body; 509 | } 510 | path.replaceWithMultiple(alternate); 511 | } else { 512 | path.remove(); 513 | } 514 | } 515 | }, 516 | }); 517 | } 518 | 519 | _evaluateBinaryPaths() { 520 | traverse(this._ast, { 521 | BinaryExpression(path) { 522 | const { node } = path; 523 | if (t.isNumericLiteral(node.left) && t.isNumericLiteral(node.right)) { 524 | path.replaceWith(t.numericLiteral(path.evaluate().value)); 525 | } 526 | }, 527 | }); 528 | 529 | traverse(this._ast, { 530 | SequenceExpression(path) { 531 | const { node } = path; 532 | let isAllNumbers = true; 533 | node.expressions.forEach((expr) => { 534 | if (!t.isNumericLiteral(expr)) isAllNumbers = false; 535 | }); 536 | if (isAllNumbers) { 537 | path.replaceWith(t.numericLiteral(path.evaluate().value)); 538 | } 539 | }, 540 | }); 541 | } 542 | 543 | _convertBracketToDot() { 544 | console.log('Bracker to dot notation...'); 545 | const validIdentifierRegex = 546 | /^(?!(?:do|if|in|for|let|new|try|var|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|function|arguments|interface|protected|implements|instanceof)$)[$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]*$/; 547 | 548 | traverse(this._ast, { 549 | MemberExpression: (path) => { 550 | const { computed, object, property } = path.node; 551 | if ( 552 | !computed || 553 | !t.isStringLiteral(property) || 554 | !validIdentifierRegex.test(property.value) 555 | ) { 556 | return; 557 | } 558 | 559 | path.replaceWith( 560 | t.MemberExpression(object, t.identifier(property.value), false) 561 | ); 562 | }, 563 | }); 564 | } 565 | 566 | // _getAllMainCases() { 567 | // let caseToPath = new Map(); 568 | 569 | // traverse(this._ast, { 570 | // SwitchCase: (path) => { 571 | // const { node } = path; 572 | // if ( 573 | // t.isForStatement(path.parentPath.parentPath.node) && 574 | // path.parentPath.parentPath.node.test.value === MAIN_FOR_STATEMENT_TEST 575 | // ) { 576 | // if (node.test) { 577 | // caseToPath.set( 578 | // node.test.value || node.test.name || 'emptyKey', 579 | // path 580 | // ); 581 | // } 582 | // } 583 | // }, 584 | // }); 585 | 586 | // return caseToPath; 587 | // } 588 | 589 | 590 | 591 | // _getCffPathType(path) { 592 | // let type; 593 | 594 | // path.scope.traverse( 595 | // path.node, 596 | // { 597 | // FunctionExpression: (path_) => { 598 | // const chlDoneBinding = path_.scope.getBinding('chl_done'); 599 | // if (!chlDoneBinding) return; 600 | // type = chlDoneBinding.references ? chl_done_ref : chl_done_no_ref; 601 | // }, 602 | // }, 603 | // path.scope, 604 | // path.parentPath 605 | // ); 606 | 607 | // return type === undefined ? no_chl_done : type; 608 | // } 609 | 610 | // _getRightCffOrder() { 611 | // const mainCases = this._getAllMainCases(); 612 | // const cffRightOrderPaths = []; 613 | 614 | // // CFF starts from key = 'undefined' 615 | // let cffState = 'undefined'; 616 | 617 | // while (cffState !== undefined) { 618 | // // Get path for CFFState 619 | // const cffPath = mainCases.get(cffState); 620 | 621 | // // Another routine for finding assignments like _['xyz'] = ... 622 | // // Nothing complicated, just look at the AST 623 | // const AssignmentExpressionVisitor = { 624 | // AssignmentExpression: (path) => { 625 | // const { node } = path; 626 | 627 | // if ( 628 | // t.isMemberExpression(node.left) && 629 | // node.left.object.name === MAIN_ARRAY_NAME 630 | // ) { 631 | // const nextKey = 632 | // node.right.value !== '' ? node.right.value : 'emptyKey'; 633 | // cffRightOrderPaths.push(mainCases.get(nextKey)); 634 | // cffState = nextKey; 635 | // path.stop(); 636 | // } 637 | // }, 638 | // }; 639 | 640 | // switch (this._getCffPathType(cffPath)) { 641 | // case chl_done_ref: 642 | // cffPath.scope.traverse( 643 | // cffPath.node.consequent[0].expression.arguments[0], 644 | // AssignmentExpressionVisitor, 645 | // cffPath.scope, 646 | // cffPath.parentPath 647 | // ); 648 | // break; 649 | // case chl_done_no_ref: 650 | // cffPath.node.consequent.some((node) => { 651 | // if ( 652 | // node.expression && 653 | // t.isAssignmentExpression(node.expression) && 654 | // t.isMemberExpression(node.expression.left) && 655 | // node.expression.left.object.name === MAIN_ARRAY_NAME 656 | // ) { 657 | // const nextKey = 658 | // node.expression.right.value !== '' 659 | // ? node.expression.right.value 660 | // : 'emptyKey'; 661 | 662 | // cffRightOrderPaths.push(mainCases.get(nextKey)); 663 | // cffState = nextKey; 664 | // return; 665 | // } 666 | // }); 667 | // break; 668 | // case no_chl_done: 669 | // const currentCffState = cffState; 670 | // cffPath.scope.traverse( 671 | // cffPath.node, 672 | // AssignmentExpressionVisitor, 673 | // cffPath.scope, 674 | // cffPath.parentPath 675 | // ); 676 | 677 | // if (currentCffState === cffState) { 678 | // cffState = undefined; 679 | // } 680 | 681 | // break; 682 | // default: 683 | // throw Error('Unknown path type'); 684 | // } 685 | // } 686 | 687 | // return cffRightOrderPaths; 688 | // } 689 | 690 | // _getCodeWithoutCff() { 691 | // console.log('Getting the code without the CFF...'); 692 | 693 | // const rightOrder = this._getRightCffOrder(); 694 | // let codeWithoutCff = ''; 695 | 696 | // rightOrder.forEach((casePath) => { 697 | // const arrNodes = casePath.node.consequent.filter( 698 | // (cons) => !(t.isReturnStatement(cons) || t.isBreakStatement(cons)) 699 | // ); 700 | // arrNodes.forEach((el) => { 701 | // codeWithoutCff += generate(el).code; 702 | // }); 703 | // }); 704 | 705 | // return codeWithoutCff; 706 | // } 707 | 708 | } 709 | 710 | module.exports = Deobfuscator; 711 | -------------------------------------------------------------------------------- /deobfuscator/utils/constants.js: -------------------------------------------------------------------------------- 1 | const MAIN_ARRAY_NAME = '_'; 2 | const SHUFFLE_ARRAY_FUNCTION_ARGS_LENGTH = 2; 3 | const MAIN_FOR_STATEMENT_TEST = 'life goes on'; 4 | 5 | // path types(for control flow flattening) 6 | const chl_done_ref = Symbol('chl_done_ref'); // Function with the parameter chl_done, and it is used 7 | const chl_done_no_ref = Symbol('chl_done_no_ref'); 8 | const no_chl_done = Symbol('no_chl_done'); // No function, just statements 9 | 10 | module.exports = { 11 | MAIN_ARRAY_NAME, 12 | SHUFFLE_ARRAY_FUNCTION_ARGS_LENGTH, 13 | MAIN_FOR_STATEMENT_TEST, 14 | chl_done_ref, 15 | chl_done_no_ref, 16 | no_chl_done 17 | } -------------------------------------------------------------------------------- /images/devtools.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rastvl/cloudflare-main-challenge-deobfuscator/c653ec47a10fef4def0a762ff5852decb8e31974/images/devtools.gif -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const Deobfuscator = require("./deobfuscator/Deobfuscator"); 3 | 4 | const sourceCode = fs.readFileSync("input/cf-main-challenge.js", { 5 | encoding: "utf-8", 6 | }); 7 | 8 | const deobfuscator = new Deobfuscator(sourceCode); 9 | const code = deobfuscator.deobfuscate(); 10 | 11 | fs.writeFile("./output/deobfuscated_code.js", code, () => console.log("done!")); 12 | -------------------------------------------------------------------------------- /input/cf-main-challenge.js: -------------------------------------------------------------------------------- 1 | (function anonymous( 2 | ) { 3 | window._=["life goes on","fBkINTSg","_cf_chl_ctx","chC","SkRhXCsE","yes","","LByCwQju","hXVZvmTe","p","u","x","i","a","p5","?","N","f","o","s","z","n","I","b","a.","FunctionB14414eCwkOMB[native code]BisArrayBappBhasOwnPropertyBundefinedB16306440EvGUgIBcallBgetPrototypeOfBloadTimesBchCBconcatB12kcOIUOBd.cookieBnameBobjectBObjectB1009045jbTqZVBfunctionBcsiBrt.BbooleanB18jKdIqDBNS_ERROR_NOT_IMPLEMENTEDBruntimeBgetOwnPropertyNamesBkeysB_cf_chl_ctxB15258258wmlcUvB846372KTDOTSBcatchBisNaNBtoStringBchromeB[object Array]BprototypeBsortBstringBspliceBlengthBindexOfB1935871uKOGxqBwebstoreBbigintBnumberBArrayB4849128GpdgzLBpushB32cCeUqDBsymbol","B","bKlnHPov","TLQcaTEQ","BwoaMMnj","HEBfHHhCs/c=","nCbkl5ZIZeJvox2","XtPfUpYe","sLPMFHzu","GBoHT31G5vY=","YeDidQYL","YfxIlqeY","hEoVNwAC","EBEJTS9GtKk=","DDxO6914AuXkFhU","rJFmoIPY","kmmhbCqX","GRdaHHlF4qk=","bsRfJb8_v8QdAyp","mWQepUTn","/h/","Request for the Private Access Token challenge.","The next request for the Private Access Token challenge may return a 401 and show a warning in console.","/cdn-cgi/challenge-platform","/pat/794cb20c0a71360e/1675611112769/aaf43176c04a831ffa50151ee726853a04b12a83140083521c4f72c55f8f45a9/Z3E1_6KemLVio1R","no-cache","follow","status_","E","UWDGfQnb","dNpiCYGi","performanceBfilterB6744228dzUfrrBobjectB51195qyOXZTBmemoryB6445520PfytWtB1352889TWCZbMBchCBtoStringBfunctionBpushBconstructorB_cf_chl_ctxB9qGgcfaBgetPrototypeOfB2565080CFAKjiB212464MllaCkB294kcqfFSBmapB12263760OVlCwmBgetOwnPropertyNames","aPYbQdMZ","uOULfJld","WDnSPEGN","r","m","l","e","9UtzzhAFnavigationFfirstInputF342363MEGoEYF720240yPOyvgF6881545gsMfGKF_cf_chl_optFnextHopProtocolF237242zSGkADFperformanceFnameFencodedBodySizeFinitiatorTypeFwebkitGetEntriesFstartTimeFentryTypeFmarkF24zlgVotFlengthF8ncxIpWF_cf_chl_ctxFcNounceFgetEntriesFscrollUpdateLatencyFdurationF189072GWKrvNF2GpEcGNF1379020pTBUnsFpaintFtypeFframeFrenderFchCF37849XxwpVsFcp-n-FresourceFfirst-inputFmeasure","F","JgUbdATG","dyjXGUXV","cIRT","cSign","hLYr-Z2rrlji0gqYT0hOZi6v8bjGChmsK5HXhosSl0c","chCAS","0","chCC","sViZLvXWNuQwv2B","h/","/","sendRequest","/cdn-cgi/challenge-platform/","flow/ov1/0.04257650195934928:1675605953:h5ZkbdaUvUS2Ig7mbGOAuNL_EGHGwKTZ-LK_UO1TAQY/794cb20c0a71360e/05f178d4410a5e3","NvyLtjzI","kHBJAIDS","aQtZtXcy","rTFOyxsH","YmCMhNDy","NcasvWhB","ERAOHHNJsvs=","qakqsnJ4peo3D7-","VFHmkEvJ","smAVUNjH","symbol","-1","n.","d.","removeChildHNS_ERROR_NOT_IMPLEMENTEDH16488252gMIGnEHclientInformationHstyleHconcatH61465WXUGtJHbodyHfunctionHchCHappendChildH68yPyyaFHcontentWindowHkeysHlengthHArrayHtoStringHnameHobjectH588999MunVudHnavigatorHbooleanHnumberH[object Array]Hdisplay: noneHisNaNHObjectHFunctionHbigintHcallH3931984BbAVogHstringHgetPrototypeOfHundefinedHcatchHprototypeHpushH600EtiySOH8gpzVlzHcreateElementH[native code]H56771dqyvJcHcontentDocumentHindexOfH9468UnftmqHhasOwnPropertyHgetOwnPropertyNamesHd.cookieH12pFZgwEH318OFPZOEHtabIndexHsortHisArrayHiframeH25227yhuONYH_cf_chl_ctxHsplice","H","HUFbTStI5/4=","iSQvWjnQ","ZpRbAOdf","TBdcFXwS4vo=","VRTmqvXH","HxBYFS5H6Pg=","tYSFNhFI","GkdcGilA5q4=","bhTKWVkO","A","cf_chl_probe_EsessionStorageE14080530mKOogwE8876BWwNlWElengthEremoveItemE11087973GQHxDJEnum_keysEsizeestEgetItemE1732GwIYmmEkeyE4683288wjgcXME1481ZdTyohE876TIhAmIE966885YUTcygEminE__storage_test__EchCEsetItemE1708BIBqifE_cf_chl_ctxElocalStorageEjoinE11AJFHjjEnameE9057OQjycY","cf_chl_probe_","prezboxs","BWPKTkzg","Nom","NPqeQAGo","KoiPNAgb","dfSIqsRS","awrWxDmJ","iframe","none","load","br","RAexkjik","object","data:application/pdf;base64,JVBERi0xLg10cmFpbGVyPDwvUm9vdDw8L1BhZ2VzPDwvS2lkc1s8PC9NZWRpYUJveFswIDAgMyAzXT4+XT4+Pj4+Pg==","undefined","fpAGSIqE","vgcySWIs","KuJyOCNu","qhEjQoNv","hSKoOQvp","OqYazWHf","cf-bubbles","input","4DNiKftslHBkWO7","Cik1fAJjcWaQKGY","Bs3TC-Rc9w9mgrE","q46NwN-yFqdz_Zc","htgQCRPu5jbeQnv","D7RifCWSh1cPtDd","3toEWoINwjqFTUd","CR1b6NR3X3ozsR7","rKG4Ytigeo7-gP1","nw-gu7t2mNRjg_D","0myaXGjyJ4/MjQqwv+jVFrHZANeptjM=","gmnnFMvR","img","challenge-form","error","/img/794cb20c0a71360e/1675611112770/KIyN5Q-RYiw3eal","QpRzlBeX","ENNzhnXf","XhtzOpQu","MgQSwsjj","alSObIay","[object process]","wENDZGMx","WvfblBiP","DXVrnoARFeQU-8X","5wtKcemhymhsCFf","QM39v_OZRWaN9HM","eVIYwEAW-E5ajJz","1AbxMm/yJA==","okrXXska","expires=","=",";",";SameSite=None; Secure","DLsRxiqs","jpRKPJXy","wkIFXFKc","JJqgyzgH","cf_chl_cc_UywOzYRmhSOC=akaKCMeAXsjU","cf_chl_cc_eLdvSePeJuZn=KFgaVctYXNPg","cf_chl_cc_UywOzYRmhSOC=; expires=Thu, 01 Jan 1970 00:00:00 UTC;","cf_chl_cc_eLdvSePeJuZn=; expires=Thu, 01 Jan 1970 00:00:00 UTC;","VxPhIZVw","2ZfZUq3VX0MiWSX","V_vTDNDpC-M6ctS","IPsHb-_fPcLtKFI","1gb0XACc","aWaojAFI","ERcOGnhH5P8=","TdpH3ubHr3Olund","|","1","2","3","4","5","6","7","8","9","d","#B33300","#66994D","10","2d","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","IdNXA:wUNfr:#00B3E6:qoluL:fromCharCode:CbzMK:mpdip:map:CPUar:kPjAC:Rdynr:iJaJs:all:SCsTi:convertToBlob:dvQZL:srWCo:DFwhq:WiZsu:2739WaQcGI:ktxCM:#E6331A:ellipse:zlyci:VHrzK:oHOfA:fVrSG:UEeZi:performance:none:KvYKD:xhCLw:OXEuh:28KPXCCE:1|3|2|9|5|11|10|0|6|8|4|7:max:OqcSh:ecfRB:UTpHN:shadowColor:moGID:#999966:fillStyle:sRrdw:iGxds:#404041:executionTime:#99E6E6:floor:mZMJa:DSvQI:#6680B3:rzMmn:591895zHIEQc:QAPdX:6|10|15|1|12|5|14|0|2|16|7|11|4|8|3|13|9:wRGcK:rNHuH:#CCFF1A:#FF6633:RLpzL:#E666FF:unknown:fill:mmpKT:#33FFCC:#809980:AEeLo:#F38020:#FFB399:QNtrr:DbsUX:LaYii:#6666FF:quadraticCurveTo:toBlob:DubdR:PZyjx:dIIOK:#FFFF99:wcXaV:XIwjo:worqI:KABVQ:cMtwJ:#FF33FF:CfWXL:NVtNw:createElement:UtoMP:canvas:13|12|24|8|11|15|22|21|23|20|19|2|18|7|9|10|5|1|0|3|16|26|6|25|4|17|14:XPKHX:gPklU:#FF1A66:#FAAE40:#4DB3FF:getTime:#66664D:#3366E6:1828VtPYoJ:OVbFA:cWHgs:cqmmQ:width:#80B300:XkxSh:#CCCC00:XrjVr:BihVr:jmRFL:OmrBD:#4D80CC:kPylB:sCtMz:bWPRF:cxtjJ:YmqXA:#4DB380:beginPath:stroke:YGrFd:RqUUF:#1AB399:#E64D66:TaxIY:4195824NoGcaz:zWjgu:jkiQq:fDCeK:jbVsI:push:hashes:PlBGM:IHNnW:andCR:OffscreenCanvasRenderingContext2D:then:5|0|4|1|3|2:MEjJo:nswNP:toDataURL:wbUbs:#66991A:sUMrD:10FFtIXV:tLLaG:#FF4D4D:substring:kOjrz:KqzFF:fillText:CqZXO:#809900:LiXax:DFEAE:438902SWkqrx:BByVr:npIIM:#00E680:#E6B3B3:addColorStop:uBhWh:#FF99E6:uUywF:bezierCurveTo:FujPx:GXltd:#1AFF33:813789xorbna:qNpUV:fUQtX:#991AFF:RunOZ:zVvdb:KfvbN:aSttP:undefined:hYwDh:#CC9999:RAfFV:VBAFd:now:MyOVP:EUMqL:WwEmj:XQemz:qQWKE:split:qnntd:strokeText:join:llWFF:#B3B31A:GSEMi:pmyzG:shadowBlur:#33991A:IbqLf:#CC80CC:eSdCP:CZGYS:NaBnS:moveTo:#99FF99:document:_cf_chl_ctx:sERUD:YfviH:round:arc:8161144WunGdT:BSQRl:height:FOqhw:12aVSdTI:igVlJ:CEeeJ:ZvYhS:BiqzC:#9900B3:dsavw:oktZs:yDYeO:font:kAVQP:KyXZQ:CanvasRenderingContext2D:19593838HxwDpe:#FF3380:display:#B366CC:znETi:length:oGlUd:createRadialGradient:#E666B3:jjKcn:14OYACsd:evMyg:px aanotafontaa:0123456789abcdef:PLUbt:style:#B34D4D:uXaRT:heaoC:hello:XfdeE:#66E64D:NNOFl:text:#E6FF80:#E6B333:EeZBQ:#4D8000:#4D8066:charCodeAt:getContext:5|7|4|9|0|1|3|2|8|6:WmXZN:ivyzf:ftvvc:CKrrk:#999933:min",":","span","block","17px","0px","transparent",'­',"px","HUZdHXMR4P4=","FvDyadeHWSCYkCl","wwoLHHHS","SkRhWyMej6ymPrPKEA==","sxtanTnI","hIsrVuHG","eGUoZmmVvvr","loyn","DGtYKIO","eogpbqlN","q4ecUhhfq7dIpwI","0mo="];(_[_[0]]=function(){for(;_[0];)switch(_[_[1]]){case _[2765^2764]:window[_[1681^1683]][_[1946^1942,3]]++;window[_[2642^2626,2]][window[_[5756/2878]][_[4648^4651]]]={i:_[1583^1579],h:_[1107^1110,5],tH:_[6],t:-new Date().getTime()};_[_[1]]=_[7];break;case _[4308^4316]:(function(fcMLHKw){var E,c,d,e,f;E=b,function(g,h,x,i,j){for(x=b,i=g();!![];)try{if(j=-parseInt(x(158))/1*(parseInt(x(197))/2)+-parseInt(x(192))/3+-parseInt(x(175))/4+parseInt(x(163))/5*(parseInt(x(168))/6)+-parseInt(x(187))/7*(parseInt(x(194))/8)+parseInt(x(174))/9+parseInt(x(152))/10,j===h)break;else i.push(i.shift());}catch(k){i.push(i.shift());}}(a,910768),c=function(g,h,y){return y=b,h instanceof g[y(196)]&&g[y(196)][y(181)][y(178)].call(h)[y(186)](y(198))>0;},d=function(g,h,z){return z=b,window[z(191)]&&window[z(191)][z(199)]?g[z(191)][z(199)](h):g[z(162)][z(181)][z(178)].call(h)===z(180);},e=function(g,h,i,A,j,l){A=b;try{return h[i][A(176)](function(){}),_[1*9];}catch(m){}try{if(h[i]==null)return h[i]===undefined?_[2513^2523]:_[45089/4099];}catch(n){return _[16368/1364];}return d(g,h[i])?_[1*13]:window[A(191)]&&h[i]===g[A(191)]?_[2012^2002]:(j=typeof h[i],l=_[3*5],j==A(164)?l=c(g,h[i])?_[29824/1864]:_[56304/3312]:j==A(161)?l=_[2284^2302]:j==A(183)?l=_[19]:j==A(202)?l=_[10]:j==A(195)?l=_[1408^1468,20]:j==A(190)?l=_[3805^3784]:j==A(189)?l=_[2418^2404]:j==A(167)&&(l=_[3200^3223]),l);},f=function(g,h,j,l,C,n,q,p,r,s,t,u){if(C=b,h===null||h===undefined)return l;n=[];for(p in h){n[C(193)](p);}(Object[C(171)]&&(n=n[C(157)](g[C(162)][C(171)](h))),Object[C(172)]&&Object[C(154)])&&(q=g[C(162)][C(154)](h),q!=null&&(n=n[C(157)](Object[C(172)](q))));for(n=function(v,D,w){for(D=C,v[D(182)](),w=0;w0;},d=function(j,k,B){return B=b,window[B(200)]&&window[B(200)][B(180)]?j[B(200)][B(180)](k):j[B(154)][B(163)][B(201)][B(157)](k)===B(151);},e=function(j,l,m,C,n,p){C=b;try{return l[m][C(162)](function(){}),_[4137^4128];}catch(q){}try{if(l[m]==null)return l[m]===undefined?_[4546^4552]:_[4304^4315];}catch(r){return _[12];}return d(j,l[m])?_[13]:window[C(200)]&&l[m]===j[C(200)]?_[4795^4825,14]:(n=typeof l[m],p=_[2553^2482,15],n==C(193)?p=c(j,l[m])?_[2377^2409,16]:_[17]:n==C(203)?p=_[4737^4845,18]:n==C(159)?p=_[1871^1884]:n==C(161)?p=_[3210^3200,10]:n==_[90]?p=_[4561^4601,20]:n==C(150)?p=_[60774/2894]:n==C(156)?p=_[1340^1504,22]:n==C(149)&&(p=_[1623^1713,23]),p);},f=function(j,l,m,n,E,q,s,r,t,u,v,w){if(E=b,l===null||l===undefined)return n;q=[];for(r in l){q[E(164)](r);}(Object[E(174)]&&(q=q[E(190)](j[E(154)].getOwnPropertyNames(l))),Object[E(198)]&&Object[E(160)])&&(s=j[E(154)][E(160)](l),s!=null&&(q=q[E(190)](Object[E(198)](s))));for(q=function(x,F,y){for(F=E,x[F(179)](),y=0;y15728640)break;q=(k[D(282)](r,e(q)),m+=q,Math[D(279)](2*q,10485760));}catch(w){p=w[D(288)];break;}}for(o=0;o<1024;o++){r=D(290)+(n+o);try{k[D(282)](r,e(2048)),m+=2048;}catch(x){p=x[D(288)];break;}}for(n=n+o;n>=0;n--){r=D(290)+n;try{k[D(295)](r);}catch(y){}}return t=f(k),u=t[D(271)],v={},v.s=u,v.ps=m,v.ex=p,v;}function i(G){G=b,g===2&&(window[G(284)][window[G(284)][G(281)]].a=_[58197/3063],setTimeout(fcMLHKw,0));}})(function(){if(_[_[1]]!=_[2665^2677]&&_[_[1]]!=_[4858^4358,102]){return;}_[_[1]]=_[3412^2412,108];_[_[0]]();});_[_[1]]=_[28];break;case _[2487^2459]:(function(fcMLHKw){(function(Cwp){var DMXvQpNm=new Array;DMXvQpNm.push(1);DMXvQpNm.push(+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])-[])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])))/+((-~~~[]+[])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(-~~~[])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]))),+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])))/+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+[])+(-~~~[])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(-~~~[]))),+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])))/+((!+[]+(!![])+(!![])+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(-~~~[])+(-~~~[])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]))),+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]))/+((!+[]+(!![])-[]+[])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(!+[]+(!![])-[])+(-~~~[])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])-[]))),+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![])+(-~~~[])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(-~~~[]))/+((-~~~[]+[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(-~~~[])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![]+!![]))),+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![])+(-~~~[]))/+((-~~~[]+[])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(-~~~[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![]))+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![]))),+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])))/+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])-[])+(!+-[]+(+-!![])+-[]))),+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![])+(-~~~[]))/+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])-[])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]))),+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])+(!![])))/+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(!+-[]+(+-!![])+-[])+(-~~~[])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![]))),+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])+(!![])))/+((!+[]+(!![])+(!![])+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![]+!![])+(-~~~[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])-[])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]))));var pBvyPcVyC=_[1471^1490];var nxNrYEGoa;try{(nxNrYEGoa=function(){for(;_[110];){switch(pBvyPcVyC){case _[111]:(function(done){var __pl=navigator.plugins.item(4294967296);var __n=_[2*3];if(__pl){__n=__pl.name;};DMXvQpNm[DMXvQpNm[0]]*=(+(navigator.plugins.item(4294967297)===navigator.plugins.item(1)))*(+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]))/+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])+(!![]))+(-~~~[])+(!+[]+(!![])-[]))));DMXvQpNm[DMXvQpNm[0]]=(+DMXvQpNm[DMXvQpNm[0]]).toFixed(10);DMXvQpNm[DMXvQpNm[0]]+=_[1942^1947]+__n;;DMXvQpNm[0]++;})(function(){pBvyPcVyC=_[112];nxNrYEGoa();});pBvyPcVyC=_[434033/3841];break;case _[114]:(function(done){(function(){var fcfs=function(inst,cb,args){inst.i=(inst.i?inst.i:0)+1;if(inst.i===1){cb(args);}};var inst={};var _0xh=document.createElement(_[143060/1244]);_0xh.style.display=_[2495^2507];document.body.appendChild(_0xh);var _0xi=_0xh.contentDocument||_0xh.contentWindow.document;_0xh.addEventListener(_[1784^1677],function(){_0xi.createElement(_[432470/3665]);_0xi.createElement=function(){fcfs(inst,done,{a:1,child:_0xh});};_0xi.createElement(_[1770^1698,9]);fcfs(inst,done,{a:0,child:_0xh});});setTimeout(function(){fcfs(inst,done,{a:2,child:_0xh});},500);})();})(function(tc){DMXvQpNm[DMXvQpNm[0]]*=(+((!!tc.a)))*(+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![])+(-~~~[]))/+((!+[]+(!![])+(!![])+!![]+!![]+[])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]))));DMXvQpNm[DMXvQpNm[0]]=(DMXvQpNm[DMXvQpNm[0]]).toFixed(10);document.body.removeChild(tc.child);DMXvQpNm[0]++;pBvyPcVyC=_[1309^1523,119];nxNrYEGoa();});pBvyPcVyC=_[112];break;case _[2349^2396]:(function(done){(function(){var fcfs=function(inst,cb,args){inst.i=(inst.i?inst.i:0)+1;if(inst.i===1){cb(args);}};var inst={};var _0xh=document.createElement(_[289800/2520]);_0xh.style.display=_[58*2];document.body.appendChild(_0xh);var _0xi=_0xh.contentDocument||_0xh.contentWindow.document;var obj=document.createElement(_[483720/4031]);obj.data=_[3888^3913];obj.onload=function(){fcfs(inst,done,{a:1,child:_0xh});};obj.onerror=function(){fcfs(inst,done,{a:0,child:_0xh});};setTimeout(function(){fcfs(inst,done,{a:2,child:_0xh});},250);_0xi.body.appendChild(obj);})();})(function(tc){DMXvQpNm[DMXvQpNm[0]]-=(+((_[18402/3067]+tc.a)!==_[122]))*(+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])-[])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])))/+((!+[]+(!![])+(!![])+!![]+[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]))));DMXvQpNm[DMXvQpNm[0]]=(DMXvQpNm[DMXvQpNm[0]]).toFixed(10);DMXvQpNm[DMXvQpNm[0]]+=_[1294^1288]+(_[6]+JSON.stringify(tc.a));document.body.removeChild(tc.child);DMXvQpNm[0]++;pBvyPcVyC=_[1671^1788];nxNrYEGoa();});pBvyPcVyC=_[3197^3949,112];break;case _[109*1]:(function(done){;DMXvQpNm[DMXvQpNm[0]]-=(+(false===-0))*(+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])))/+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![]))+(-~~~[])+(-~~~[])+(!+[]+(!![])-[])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])))));DMXvQpNm[DMXvQpNm[0]]=(+DMXvQpNm[DMXvQpNm[0]]).toFixed(10);;DMXvQpNm[0]++;})(function(){pBvyPcVyC=_[16*7];nxNrYEGoa();});pBvyPcVyC=_[243784/1966];break;case _[2456^2287,125]:(function(done){var t=navigator.plugins.refresh;navigator.plugins.refresh=navigator.plugins.item(0);DMXvQpNm[DMXvQpNm[0]]-=(+(navigator.plugins.refresh===navigator.plugins.item(0)))*(+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])+(!![])))/+((-~~~[]+[])+(!+-[]+(+-!![])+-[])+(-~~~[])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])-[])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])))));DMXvQpNm[DMXvQpNm[0]]=(+DMXvQpNm[DMXvQpNm[0]]).toFixed(10);navigator.plugins.refresh=t;DMXvQpNm[0]++;})(function(){pBvyPcVyC=_[112];nxNrYEGoa();});pBvyPcVyC=_[37*3];break;case _[62*2]:(function(done){;DMXvQpNm[DMXvQpNm[0]]+=(+(!!0===true))*(+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]))/+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(-~~~[])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]))));DMXvQpNm[DMXvQpNm[0]]=(+DMXvQpNm[DMXvQpNm[0]]).toFixed(10);;DMXvQpNm[0]++;})(function(){pBvyPcVyC=_[4376^4456];nxNrYEGoa();});pBvyPcVyC=_[4350^4224];break;case _[522816/4668]:return;case _[2993^3022]:(function(done){;DMXvQpNm[DMXvQpNm[0]]-=(+(undefined===NaN))*(+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![])+(-~~~[]))/+((-~~~[]+[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])-[])+(!+[]+(!![])-[])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]))));DMXvQpNm[DMXvQpNm[0]]=(+DMXvQpNm[DMXvQpNm[0]]).toFixed(10);;DMXvQpNm[0]++;})(function(){pBvyPcVyC=_[147616/1318];nxNrYEGoa();});pBvyPcVyC=_[254976/1992];break;case _[1527^1399]:(function(done){var el=document.getElementById(_[3261^3132]);DMXvQpNm[DMXvQpNm[0]]+=(+(el&&el.tagName&&(el.tagName.toLowerCase()===_[4649^4779])))*(+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![])+(-~~~[])+(!+[]+(!![])+(!![])+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![])+(-~~~[]))/+((-~~~[]+[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![]))+(!+[]+(!![])-[])+(!+[]+(!![])+(!![]))+(!+[]+(!![])-[])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]))));DMXvQpNm[DMXvQpNm[0]]=(+DMXvQpNm[DMXvQpNm[0]]).toFixed(10);;DMXvQpNm[0]++;})(function(){pBvyPcVyC=_[1260^1180];nxNrYEGoa();});pBvyPcVyC=_[204125/1633];break;case _[14*9]:(function(done){;DMXvQpNm[DMXvQpNm[0]]+=(+(5===Infinity))*(+(+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+-[]+(+-!![])+-[])+(!+[]+(!![])+(!![])))/+((!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])-[])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]+!![])+(!+[]+(!![])+(!![])+!![]+!![]+!![]+!![]))));DMXvQpNm[DMXvQpNm[0]]=(+DMXvQpNm[DMXvQpNm[0]]).toFixed(10);;DMXvQpNm[0]++;})(function(){pBvyPcVyC=_[16*7];nxNrYEGoa();});pBvyPcVyC=_[1325^1362];break;case _[1712^1739]:(function(done){var ov=new Array;var k;var s,v,m2,ns,pt;for(var m=0;m<9;m++){k=new Array;s=0;v=0;m2=0;ns=0;pt=-1;if(window.chrome&&window.chrome.csi){pt=window.chrome.csi().pageT;}if(window.performance.timing&&window.performance.timing.navigationStart){ns=window.performance.timing.navigationStart;}for(var j=0;j<10;j++){k.push((Date.now()-ns)-pt);}for(var i=0;i>s;},"IHNnW":function(r,s){return r===s;},"worqI":function(r,s){return r^s;},"UEeZi":function(r,s,t,u,v,w,x){return r(s,t,u,v,w,x);},"WmXZN":function(r,s){return r^s;},"GSEMi":function(r,s){return r<>>32-y),v);},g=function(r,u,v,w,y,z,A,e5,C,D,E,F,G,H,I,J,K,L){return(e5=b,d[e5(496)](e5(350),e5(350)))?f(u&v|d[e5(304)](~u,w),r,u,y,z,A):(z[e5(317)](),C=d[e5(327)](A[e5(302)],4),D=B[e5(411)]/4,E=d[e5(467)](d.qhkmW(C[e5(302)],2),D(C/(E/2+1))),F=d[e5(494)](F[e5(411)]/2,d[e5(443)](G,D/(d[e5(480)](H,2)+1))),G=I[e5(463)](C,D)/(J/2+1),H=G+d[e5(443)](K,G),I=G+d[e5(443)](L,G),J=M(d[e5(287)](2,N.PI)),K=d[e5(443)](O,2*P.PI),L=(K+d[e5(344)](Q,1.75*R.PI)+.25*S.PI)%d[e5(287)](2,T.PI),U[e5(486)](d[e5(393)](E,0),d[e5(495)](F,0),H|0,I|0,J,K,L),V[e5(318)](),!![]);},h=function(r,u,v,w,y,z,A,e6){return e6=b,f(d[e6(452)](u,w)|d[e6(482)](v,~w),r,u,y,z,A);},i=function(r,u,v,w,y,z,A,e8,B,D,E){return(e8=b,B={"MEjJo":function(C,D){return C+D;},"hYwDh":function(C,D,e7){return e7=b,d[e7(542)](C,D);},"mmpKT":function(C,D){return C&D;}},d[e8(332)](e8(290),e8(487)))?(D=B[e8(337)](g&65535,h&65535),E=(i>>16)+(j>>16)+B[e8(376)](D,16),E<<16|B[e8(528)](D,65535)):f(d[e8(546)](d[e8(546)](u,v),w),r,u,y,z,A);},j=function(r,u,v,w,y,z,A,e9){return e9=b,d[e9(491)](f,d[e9(458)](v,u|~w),r,u,y,z,A);},k=function(r,ea,t,u,v,w,x,y){for(ea=b,t=ea(457)[ea(386)](_[472953/2613]),u=0;!![];){switch(t[u++]){case _[72]:for(x=0;x>2]|=r[ea(455)](x)<<(x%4<<3),x++);continue;case _[586^2042,182]:y[x>>2]|=d[ea(392)](128,x%4<<3);continue;case _[5720^4953,183]:y[14]=d[ea(461)](v,8);continue;case _[342056/1859]:if(x>55){for(e(w,y),x=0;x<16;y[x]=0,x++);}continue;case _[915750/4950]:r=r[ea(346)](x-64);continue;case _[3391^3461]:w=(v=r[ea(431)],[1732584193,-271733879,-1732584194,271733878]);continue;case _[852533/4559]:return w;case _[3522^3454,188]:for(x=64;x<=r[ea(431)];d[ea(414)](e,w,d[ea(443)](l,r[ea(346)](x-64,x))),x+=64);continue;case _[189]:e(w,y);continue;case _[259730/1367]:y=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];continue;}break;}},l=function(r,eb,t,u){for(eb=b,t=[],u=0;u<64;t[u>>2]=d[eb(504)](d[eb(311)](r.charCodeAt(u),d[eb(392)](r[eb(455)](d[eb(385)](u,1)),8))+d[eb(392)](r[eb(455)](u+2),16),d.GSEMi(r[eb(455)](u+3),24)),u+=4);return t;},m=ec(439)[ec(386)](_[6108/1018]),n=function(r,ed,t,u){for(ed=ec,t=_[2*3],u=0;u<4;t+=m[d[ed(300)](d[ed(542)](r,d[ed(385)](d[ed(432)](u,8),4)),15)]+m[d[ed(482)](r>>u*8,15)],u++);return t;},o=function(r,ee,s){for(ee=ec,s=0;d[ee(352)](s,r[ee(431)]);r[s]=n(r[s]),s++);return r[ee(389)](_[2*3]);},p=function(r,ef){return ef=ec,o(d[ef(299)](k,r));},q=function(r,s,eg){return eg=ec,d[eg(304)](r+s,4294967295);},d[ec(396)](d[ec(344)](p,ec(445))[1],_[228627/1197])&&(q=function(r,s,eh,t,u){if(eh=ec,d[eh(398)](eh(333),eh(333)))d[eh(320)](i,j,d[eh(381)](k,l[eh(346)](d[eh(467)](m,64),n)));else return t=d[eh(325)](r,65535)+d[eh(508)](s,65535),u=(r>>16)+d[eh(542)](s,16)+(t>>16),d[eh(495)](u<<16,d[eh(304)](t,65535));}),p(c);},dY=typeof globalThis!==e2(375)?globalThis:dV,dZ=function(c,d,f,ei,g,h,j,k,l,m,n,o,s,p,q,r){for(ei=e2,g={"QNtrr":function(t,u){return t/u;},"UTpHN":function(t,u){return t(u);},"BSQRl":function(t,u){return t|u;},"ktxCM":function(t,u){return t(u);},"yDYeO":function(t,u){return t|u;},"DFEAE":function(t,u){return t-u;},"ecfRB":function(t,u){return t*u;},"iJaJs":function(t,u){return t+u;},"sRrdw":function(t,u){return t-u;},"IdNXA":function(t,u){return t(u);},"OmrBD":function(t,u){return t/u;},"znETi":function(t,u){return t*u;},"zVvdb":function(t,u){return t(u);},"llWFF":function(t,u){return t(u);},"CPUar":function(t,u){return t/u;},"jkiQq":function(t,u){return t-u;},"LaYii":function(t,u){return t|u;},"YmqXA":function(t,u){return t-u;},"KqzFF":function(t,u){return t+u;},"NNOFl":function(t,u,w){return t(u,w);},"cMtwJ":ei(498),"XfdeE":function(t,u){return t|u;},"dsavw":ei(438),"ftvvc":function(t,u){return t(u);},"BihVr":function(t,u){return t(u);},"OqcSh":function(t,u){return t=u;},"kAVQP":function(t,u){return t%u;},"VHrzK":function(t,u){return t>>u;},"jjKcn":function(t,u){return t<>16),E>>16),u[eD(356)](F,16)|E&65535;}:t[y]!==_[2*3]&&w[eC(329)](g[eC(372)](dX,t[y])),y++);return z=k()-x,A={},A[eC(330)]=w,A[eC(510)]=z,A;},k=function(eE){return eE=ei,dY[eE(492)]&&dY[eE(492)][eE(380)]?performance[eE(380)]():new Date()[eE(295)]();},l=k(),m=[],n=_[6],o=null,p=0;p=6.0.0" 30 | } 31 | }, 32 | "node_modules/@babel/code-frame": { 33 | "version": "7.18.6", 34 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 35 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 36 | "dependencies": { 37 | "@babel/highlight": "^7.18.6" 38 | }, 39 | "engines": { 40 | "node": ">=6.9.0" 41 | } 42 | }, 43 | "node_modules/@babel/compat-data": { 44 | "version": "7.19.1", 45 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz", 46 | "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==", 47 | "engines": { 48 | "node": ">=6.9.0" 49 | } 50 | }, 51 | "node_modules/@babel/core": { 52 | "version": "7.19.1", 53 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz", 54 | "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==", 55 | "dependencies": { 56 | "@ampproject/remapping": "^2.1.0", 57 | "@babel/code-frame": "^7.18.6", 58 | "@babel/generator": "^7.19.0", 59 | "@babel/helper-compilation-targets": "^7.19.1", 60 | "@babel/helper-module-transforms": "^7.19.0", 61 | "@babel/helpers": "^7.19.0", 62 | "@babel/parser": "^7.19.1", 63 | "@babel/template": "^7.18.10", 64 | "@babel/traverse": "^7.19.1", 65 | "@babel/types": "^7.19.0", 66 | "convert-source-map": "^1.7.0", 67 | "debug": "^4.1.0", 68 | "gensync": "^1.0.0-beta.2", 69 | "json5": "^2.2.1", 70 | "semver": "^6.3.0" 71 | }, 72 | "engines": { 73 | "node": ">=6.9.0" 74 | }, 75 | "funding": { 76 | "type": "opencollective", 77 | "url": "https://opencollective.com/babel" 78 | } 79 | }, 80 | "node_modules/@babel/generator": { 81 | "version": "7.19.0", 82 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", 83 | "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", 84 | "dependencies": { 85 | "@babel/types": "^7.19.0", 86 | "@jridgewell/gen-mapping": "^0.3.2", 87 | "jsesc": "^2.5.1" 88 | }, 89 | "engines": { 90 | "node": ">=6.9.0" 91 | } 92 | }, 93 | "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { 94 | "version": "0.3.2", 95 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 96 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 97 | "dependencies": { 98 | "@jridgewell/set-array": "^1.0.1", 99 | "@jridgewell/sourcemap-codec": "^1.4.10", 100 | "@jridgewell/trace-mapping": "^0.3.9" 101 | }, 102 | "engines": { 103 | "node": ">=6.0.0" 104 | } 105 | }, 106 | "node_modules/@babel/helper-compilation-targets": { 107 | "version": "7.19.1", 108 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz", 109 | "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==", 110 | "dependencies": { 111 | "@babel/compat-data": "^7.19.1", 112 | "@babel/helper-validator-option": "^7.18.6", 113 | "browserslist": "^4.21.3", 114 | "semver": "^6.3.0" 115 | }, 116 | "engines": { 117 | "node": ">=6.9.0" 118 | }, 119 | "peerDependencies": { 120 | "@babel/core": "^7.0.0" 121 | } 122 | }, 123 | "node_modules/@babel/helper-environment-visitor": { 124 | "version": "7.18.9", 125 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 126 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", 127 | "engines": { 128 | "node": ">=6.9.0" 129 | } 130 | }, 131 | "node_modules/@babel/helper-function-name": { 132 | "version": "7.19.0", 133 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", 134 | "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", 135 | "dependencies": { 136 | "@babel/template": "^7.18.10", 137 | "@babel/types": "^7.19.0" 138 | }, 139 | "engines": { 140 | "node": ">=6.9.0" 141 | } 142 | }, 143 | "node_modules/@babel/helper-hoist-variables": { 144 | "version": "7.18.6", 145 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 146 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 147 | "dependencies": { 148 | "@babel/types": "^7.18.6" 149 | }, 150 | "engines": { 151 | "node": ">=6.9.0" 152 | } 153 | }, 154 | "node_modules/@babel/helper-module-imports": { 155 | "version": "7.18.6", 156 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 157 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 158 | "dependencies": { 159 | "@babel/types": "^7.18.6" 160 | }, 161 | "engines": { 162 | "node": ">=6.9.0" 163 | } 164 | }, 165 | "node_modules/@babel/helper-module-transforms": { 166 | "version": "7.19.0", 167 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", 168 | "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", 169 | "dependencies": { 170 | "@babel/helper-environment-visitor": "^7.18.9", 171 | "@babel/helper-module-imports": "^7.18.6", 172 | "@babel/helper-simple-access": "^7.18.6", 173 | "@babel/helper-split-export-declaration": "^7.18.6", 174 | "@babel/helper-validator-identifier": "^7.18.6", 175 | "@babel/template": "^7.18.10", 176 | "@babel/traverse": "^7.19.0", 177 | "@babel/types": "^7.19.0" 178 | }, 179 | "engines": { 180 | "node": ">=6.9.0" 181 | } 182 | }, 183 | "node_modules/@babel/helper-simple-access": { 184 | "version": "7.18.6", 185 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", 186 | "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", 187 | "dependencies": { 188 | "@babel/types": "^7.18.6" 189 | }, 190 | "engines": { 191 | "node": ">=6.9.0" 192 | } 193 | }, 194 | "node_modules/@babel/helper-split-export-declaration": { 195 | "version": "7.18.6", 196 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 197 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 198 | "dependencies": { 199 | "@babel/types": "^7.18.6" 200 | }, 201 | "engines": { 202 | "node": ">=6.9.0" 203 | } 204 | }, 205 | "node_modules/@babel/helper-string-parser": { 206 | "version": "7.18.10", 207 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", 208 | "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", 209 | "engines": { 210 | "node": ">=6.9.0" 211 | } 212 | }, 213 | "node_modules/@babel/helper-validator-identifier": { 214 | "version": "7.19.1", 215 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 216 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 217 | "engines": { 218 | "node": ">=6.9.0" 219 | } 220 | }, 221 | "node_modules/@babel/helper-validator-option": { 222 | "version": "7.18.6", 223 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 224 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 225 | "engines": { 226 | "node": ">=6.9.0" 227 | } 228 | }, 229 | "node_modules/@babel/helpers": { 230 | "version": "7.19.0", 231 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", 232 | "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", 233 | "dependencies": { 234 | "@babel/template": "^7.18.10", 235 | "@babel/traverse": "^7.19.0", 236 | "@babel/types": "^7.19.0" 237 | }, 238 | "engines": { 239 | "node": ">=6.9.0" 240 | } 241 | }, 242 | "node_modules/@babel/highlight": { 243 | "version": "7.18.6", 244 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 245 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 246 | "dependencies": { 247 | "@babel/helper-validator-identifier": "^7.18.6", 248 | "chalk": "^2.0.0", 249 | "js-tokens": "^4.0.0" 250 | }, 251 | "engines": { 252 | "node": ">=6.9.0" 253 | } 254 | }, 255 | "node_modules/@babel/parser": { 256 | "version": "7.19.1", 257 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", 258 | "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", 259 | "bin": { 260 | "parser": "bin/babel-parser.js" 261 | }, 262 | "engines": { 263 | "node": ">=6.0.0" 264 | } 265 | }, 266 | "node_modules/@babel/template": { 267 | "version": "7.18.10", 268 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", 269 | "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", 270 | "dependencies": { 271 | "@babel/code-frame": "^7.18.6", 272 | "@babel/parser": "^7.18.10", 273 | "@babel/types": "^7.18.10" 274 | }, 275 | "engines": { 276 | "node": ">=6.9.0" 277 | } 278 | }, 279 | "node_modules/@babel/traverse": { 280 | "version": "7.19.1", 281 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz", 282 | "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==", 283 | "dependencies": { 284 | "@babel/code-frame": "^7.18.6", 285 | "@babel/generator": "^7.19.0", 286 | "@babel/helper-environment-visitor": "^7.18.9", 287 | "@babel/helper-function-name": "^7.19.0", 288 | "@babel/helper-hoist-variables": "^7.18.6", 289 | "@babel/helper-split-export-declaration": "^7.18.6", 290 | "@babel/parser": "^7.19.1", 291 | "@babel/types": "^7.19.0", 292 | "debug": "^4.1.0", 293 | "globals": "^11.1.0" 294 | }, 295 | "engines": { 296 | "node": ">=6.9.0" 297 | } 298 | }, 299 | "node_modules/@babel/types": { 300 | "version": "7.19.0", 301 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", 302 | "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", 303 | "dependencies": { 304 | "@babel/helper-string-parser": "^7.18.10", 305 | "@babel/helper-validator-identifier": "^7.18.6", 306 | "to-fast-properties": "^2.0.0" 307 | }, 308 | "engines": { 309 | "node": ">=6.9.0" 310 | } 311 | }, 312 | "node_modules/@jridgewell/gen-mapping": { 313 | "version": "0.1.1", 314 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 315 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 316 | "dependencies": { 317 | "@jridgewell/set-array": "^1.0.0", 318 | "@jridgewell/sourcemap-codec": "^1.4.10" 319 | }, 320 | "engines": { 321 | "node": ">=6.0.0" 322 | } 323 | }, 324 | "node_modules/@jridgewell/resolve-uri": { 325 | "version": "3.1.0", 326 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 327 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 328 | "engines": { 329 | "node": ">=6.0.0" 330 | } 331 | }, 332 | "node_modules/@jridgewell/set-array": { 333 | "version": "1.1.2", 334 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 335 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 336 | "engines": { 337 | "node": ">=6.0.0" 338 | } 339 | }, 340 | "node_modules/@jridgewell/sourcemap-codec": { 341 | "version": "1.4.14", 342 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 343 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" 344 | }, 345 | "node_modules/@jridgewell/trace-mapping": { 346 | "version": "0.3.15", 347 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", 348 | "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", 349 | "dependencies": { 350 | "@jridgewell/resolve-uri": "^3.0.3", 351 | "@jridgewell/sourcemap-codec": "^1.4.10" 352 | } 353 | }, 354 | "node_modules/abbrev": { 355 | "version": "1.1.1", 356 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 357 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 358 | }, 359 | "node_modules/ansi-styles": { 360 | "version": "3.2.1", 361 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 362 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 363 | "dependencies": { 364 | "color-convert": "^1.9.0" 365 | }, 366 | "engines": { 367 | "node": ">=4" 368 | } 369 | }, 370 | "node_modules/balanced-match": { 371 | "version": "1.0.2", 372 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 373 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 374 | }, 375 | "node_modules/brace-expansion": { 376 | "version": "2.0.1", 377 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 378 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 379 | "dependencies": { 380 | "balanced-match": "^1.0.0" 381 | } 382 | }, 383 | "node_modules/browserslist": { 384 | "version": "4.21.4", 385 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", 386 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", 387 | "funding": [ 388 | { 389 | "type": "opencollective", 390 | "url": "https://opencollective.com/browserslist" 391 | }, 392 | { 393 | "type": "tidelift", 394 | "url": "https://tidelift.com/funding/github/npm/browserslist" 395 | } 396 | ], 397 | "dependencies": { 398 | "caniuse-lite": "^1.0.30001400", 399 | "electron-to-chromium": "^1.4.251", 400 | "node-releases": "^2.0.6", 401 | "update-browserslist-db": "^1.0.9" 402 | }, 403 | "bin": { 404 | "browserslist": "cli.js" 405 | }, 406 | "engines": { 407 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 408 | } 409 | }, 410 | "node_modules/caniuse-lite": { 411 | "version": "1.0.30001407", 412 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001407.tgz", 413 | "integrity": "sha512-4ydV+t4P7X3zH83fQWNDX/mQEzYomossfpViCOx9zHBSMV+rIe3LFqglHHtVyvNl1FhTNxPxs3jei82iqOW04w==", 414 | "funding": [ 415 | { 416 | "type": "opencollective", 417 | "url": "https://opencollective.com/browserslist" 418 | }, 419 | { 420 | "type": "tidelift", 421 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 422 | } 423 | ] 424 | }, 425 | "node_modules/chalk": { 426 | "version": "2.4.2", 427 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 428 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 429 | "dependencies": { 430 | "ansi-styles": "^3.2.1", 431 | "escape-string-regexp": "^1.0.5", 432 | "supports-color": "^5.3.0" 433 | }, 434 | "engines": { 435 | "node": ">=4" 436 | } 437 | }, 438 | "node_modules/color-convert": { 439 | "version": "1.9.3", 440 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 441 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 442 | "dependencies": { 443 | "color-name": "1.1.3" 444 | } 445 | }, 446 | "node_modules/color-name": { 447 | "version": "1.1.3", 448 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 449 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 450 | }, 451 | "node_modules/commander": { 452 | "version": "2.20.3", 453 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 454 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 455 | }, 456 | "node_modules/config-chain": { 457 | "version": "1.1.13", 458 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", 459 | "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", 460 | "dependencies": { 461 | "ini": "^1.3.4", 462 | "proto-list": "~1.2.1" 463 | } 464 | }, 465 | "node_modules/convert-source-map": { 466 | "version": "1.8.0", 467 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 468 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 469 | "dependencies": { 470 | "safe-buffer": "~5.1.1" 471 | } 472 | }, 473 | "node_modules/debug": { 474 | "version": "4.3.4", 475 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 476 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 477 | "dependencies": { 478 | "ms": "2.1.2" 479 | }, 480 | "engines": { 481 | "node": ">=6.0" 482 | }, 483 | "peerDependenciesMeta": { 484 | "supports-color": { 485 | "optional": true 486 | } 487 | } 488 | }, 489 | "node_modules/editorconfig": { 490 | "version": "0.15.3", 491 | "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", 492 | "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", 493 | "dependencies": { 494 | "commander": "^2.19.0", 495 | "lru-cache": "^4.1.5", 496 | "semver": "^5.6.0", 497 | "sigmund": "^1.0.1" 498 | }, 499 | "bin": { 500 | "editorconfig": "bin/editorconfig" 501 | } 502 | }, 503 | "node_modules/editorconfig/node_modules/semver": { 504 | "version": "5.7.1", 505 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 506 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 507 | "bin": { 508 | "semver": "bin/semver" 509 | } 510 | }, 511 | "node_modules/electron-to-chromium": { 512 | "version": "1.4.255", 513 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.255.tgz", 514 | "integrity": "sha512-H+mFNKow6gi2P5Gi2d1Fvd3TUEJlB9CF7zYaIV9T83BE3wP1xZ0mRPbNTm0KUjyd1QiVy7iKXuIcjlDtBQMiAQ==" 515 | }, 516 | "node_modules/escalade": { 517 | "version": "3.1.1", 518 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 519 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 520 | "engines": { 521 | "node": ">=6" 522 | } 523 | }, 524 | "node_modules/escape-string-regexp": { 525 | "version": "1.0.5", 526 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 527 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 528 | "engines": { 529 | "node": ">=0.8.0" 530 | } 531 | }, 532 | "node_modules/fs.realpath": { 533 | "version": "1.0.0", 534 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 535 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 536 | }, 537 | "node_modules/gensync": { 538 | "version": "1.0.0-beta.2", 539 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 540 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 541 | "engines": { 542 | "node": ">=6.9.0" 543 | } 544 | }, 545 | "node_modules/glob": { 546 | "version": "8.0.3", 547 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", 548 | "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", 549 | "dependencies": { 550 | "fs.realpath": "^1.0.0", 551 | "inflight": "^1.0.4", 552 | "inherits": "2", 553 | "minimatch": "^5.0.1", 554 | "once": "^1.3.0" 555 | }, 556 | "engines": { 557 | "node": ">=12" 558 | }, 559 | "funding": { 560 | "url": "https://github.com/sponsors/isaacs" 561 | } 562 | }, 563 | "node_modules/globals": { 564 | "version": "11.12.0", 565 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 566 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 567 | "engines": { 568 | "node": ">=4" 569 | } 570 | }, 571 | "node_modules/has-flag": { 572 | "version": "3.0.0", 573 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 574 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 575 | "engines": { 576 | "node": ">=4" 577 | } 578 | }, 579 | "node_modules/inflight": { 580 | "version": "1.0.6", 581 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 582 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 583 | "dependencies": { 584 | "once": "^1.3.0", 585 | "wrappy": "1" 586 | } 587 | }, 588 | "node_modules/inherits": { 589 | "version": "2.0.4", 590 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 591 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 592 | }, 593 | "node_modules/ini": { 594 | "version": "1.3.8", 595 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 596 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" 597 | }, 598 | "node_modules/js-beautify": { 599 | "version": "1.14.6", 600 | "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", 601 | "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", 602 | "dependencies": { 603 | "config-chain": "^1.1.13", 604 | "editorconfig": "^0.15.3", 605 | "glob": "^8.0.3", 606 | "nopt": "^6.0.0" 607 | }, 608 | "bin": { 609 | "css-beautify": "js/bin/css-beautify.js", 610 | "html-beautify": "js/bin/html-beautify.js", 611 | "js-beautify": "js/bin/js-beautify.js" 612 | }, 613 | "engines": { 614 | "node": ">=10" 615 | } 616 | }, 617 | "node_modules/js-tokens": { 618 | "version": "4.0.0", 619 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 620 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 621 | }, 622 | "node_modules/jsesc": { 623 | "version": "2.5.2", 624 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 625 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 626 | "bin": { 627 | "jsesc": "bin/jsesc" 628 | }, 629 | "engines": { 630 | "node": ">=4" 631 | } 632 | }, 633 | "node_modules/json5": { 634 | "version": "2.2.1", 635 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 636 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", 637 | "bin": { 638 | "json5": "lib/cli.js" 639 | }, 640 | "engines": { 641 | "node": ">=6" 642 | } 643 | }, 644 | "node_modules/lru-cache": { 645 | "version": "4.1.5", 646 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 647 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 648 | "dependencies": { 649 | "pseudomap": "^1.0.2", 650 | "yallist": "^2.1.2" 651 | } 652 | }, 653 | "node_modules/minimatch": { 654 | "version": "5.1.0", 655 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", 656 | "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", 657 | "dependencies": { 658 | "brace-expansion": "^2.0.1" 659 | }, 660 | "engines": { 661 | "node": ">=10" 662 | } 663 | }, 664 | "node_modules/ms": { 665 | "version": "2.1.2", 666 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 667 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 668 | }, 669 | "node_modules/node-releases": { 670 | "version": "2.0.6", 671 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", 672 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" 673 | }, 674 | "node_modules/nopt": { 675 | "version": "6.0.0", 676 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", 677 | "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", 678 | "dependencies": { 679 | "abbrev": "^1.0.0" 680 | }, 681 | "bin": { 682 | "nopt": "bin/nopt.js" 683 | }, 684 | "engines": { 685 | "node": "^12.13.0 || ^14.15.0 || >=16.0.0" 686 | } 687 | }, 688 | "node_modules/once": { 689 | "version": "1.4.0", 690 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 691 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 692 | "dependencies": { 693 | "wrappy": "1" 694 | } 695 | }, 696 | "node_modules/picocolors": { 697 | "version": "1.0.0", 698 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 699 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 700 | }, 701 | "node_modules/proto-list": { 702 | "version": "1.2.4", 703 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", 704 | "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" 705 | }, 706 | "node_modules/pseudomap": { 707 | "version": "1.0.2", 708 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 709 | "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" 710 | }, 711 | "node_modules/safe-buffer": { 712 | "version": "5.1.2", 713 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 714 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 715 | }, 716 | "node_modules/semver": { 717 | "version": "6.3.0", 718 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 719 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 720 | "bin": { 721 | "semver": "bin/semver.js" 722 | } 723 | }, 724 | "node_modules/sigmund": { 725 | "version": "1.0.1", 726 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 727 | "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==" 728 | }, 729 | "node_modules/supports-color": { 730 | "version": "5.5.0", 731 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 732 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 733 | "dependencies": { 734 | "has-flag": "^3.0.0" 735 | }, 736 | "engines": { 737 | "node": ">=4" 738 | } 739 | }, 740 | "node_modules/to-fast-properties": { 741 | "version": "2.0.0", 742 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 743 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 744 | "engines": { 745 | "node": ">=4" 746 | } 747 | }, 748 | "node_modules/update-browserslist-db": { 749 | "version": "1.0.9", 750 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", 751 | "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", 752 | "funding": [ 753 | { 754 | "type": "opencollective", 755 | "url": "https://opencollective.com/browserslist" 756 | }, 757 | { 758 | "type": "tidelift", 759 | "url": "https://tidelift.com/funding/github/npm/browserslist" 760 | } 761 | ], 762 | "dependencies": { 763 | "escalade": "^3.1.1", 764 | "picocolors": "^1.0.0" 765 | }, 766 | "bin": { 767 | "browserslist-lint": "cli.js" 768 | }, 769 | "peerDependencies": { 770 | "browserslist": ">= 4.21.0" 771 | } 772 | }, 773 | "node_modules/wrappy": { 774 | "version": "1.0.2", 775 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 776 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 777 | }, 778 | "node_modules/yallist": { 779 | "version": "2.1.2", 780 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 781 | "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" 782 | } 783 | }, 784 | "dependencies": { 785 | "@ampproject/remapping": { 786 | "version": "2.2.0", 787 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 788 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 789 | "requires": { 790 | "@jridgewell/gen-mapping": "^0.1.0", 791 | "@jridgewell/trace-mapping": "^0.3.9" 792 | } 793 | }, 794 | "@babel/code-frame": { 795 | "version": "7.18.6", 796 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 797 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 798 | "requires": { 799 | "@babel/highlight": "^7.18.6" 800 | } 801 | }, 802 | "@babel/compat-data": { 803 | "version": "7.19.1", 804 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz", 805 | "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==" 806 | }, 807 | "@babel/core": { 808 | "version": "7.19.1", 809 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz", 810 | "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==", 811 | "requires": { 812 | "@ampproject/remapping": "^2.1.0", 813 | "@babel/code-frame": "^7.18.6", 814 | "@babel/generator": "^7.19.0", 815 | "@babel/helper-compilation-targets": "^7.19.1", 816 | "@babel/helper-module-transforms": "^7.19.0", 817 | "@babel/helpers": "^7.19.0", 818 | "@babel/parser": "^7.19.1", 819 | "@babel/template": "^7.18.10", 820 | "@babel/traverse": "^7.19.1", 821 | "@babel/types": "^7.19.0", 822 | "convert-source-map": "^1.7.0", 823 | "debug": "^4.1.0", 824 | "gensync": "^1.0.0-beta.2", 825 | "json5": "^2.2.1", 826 | "semver": "^6.3.0" 827 | } 828 | }, 829 | "@babel/generator": { 830 | "version": "7.19.0", 831 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", 832 | "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", 833 | "requires": { 834 | "@babel/types": "^7.19.0", 835 | "@jridgewell/gen-mapping": "^0.3.2", 836 | "jsesc": "^2.5.1" 837 | }, 838 | "dependencies": { 839 | "@jridgewell/gen-mapping": { 840 | "version": "0.3.2", 841 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 842 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 843 | "requires": { 844 | "@jridgewell/set-array": "^1.0.1", 845 | "@jridgewell/sourcemap-codec": "^1.4.10", 846 | "@jridgewell/trace-mapping": "^0.3.9" 847 | } 848 | } 849 | } 850 | }, 851 | "@babel/helper-compilation-targets": { 852 | "version": "7.19.1", 853 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz", 854 | "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==", 855 | "requires": { 856 | "@babel/compat-data": "^7.19.1", 857 | "@babel/helper-validator-option": "^7.18.6", 858 | "browserslist": "^4.21.3", 859 | "semver": "^6.3.0" 860 | } 861 | }, 862 | "@babel/helper-environment-visitor": { 863 | "version": "7.18.9", 864 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 865 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" 866 | }, 867 | "@babel/helper-function-name": { 868 | "version": "7.19.0", 869 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", 870 | "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", 871 | "requires": { 872 | "@babel/template": "^7.18.10", 873 | "@babel/types": "^7.19.0" 874 | } 875 | }, 876 | "@babel/helper-hoist-variables": { 877 | "version": "7.18.6", 878 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 879 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 880 | "requires": { 881 | "@babel/types": "^7.18.6" 882 | } 883 | }, 884 | "@babel/helper-module-imports": { 885 | "version": "7.18.6", 886 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 887 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 888 | "requires": { 889 | "@babel/types": "^7.18.6" 890 | } 891 | }, 892 | "@babel/helper-module-transforms": { 893 | "version": "7.19.0", 894 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", 895 | "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", 896 | "requires": { 897 | "@babel/helper-environment-visitor": "^7.18.9", 898 | "@babel/helper-module-imports": "^7.18.6", 899 | "@babel/helper-simple-access": "^7.18.6", 900 | "@babel/helper-split-export-declaration": "^7.18.6", 901 | "@babel/helper-validator-identifier": "^7.18.6", 902 | "@babel/template": "^7.18.10", 903 | "@babel/traverse": "^7.19.0", 904 | "@babel/types": "^7.19.0" 905 | } 906 | }, 907 | "@babel/helper-simple-access": { 908 | "version": "7.18.6", 909 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", 910 | "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", 911 | "requires": { 912 | "@babel/types": "^7.18.6" 913 | } 914 | }, 915 | "@babel/helper-split-export-declaration": { 916 | "version": "7.18.6", 917 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 918 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 919 | "requires": { 920 | "@babel/types": "^7.18.6" 921 | } 922 | }, 923 | "@babel/helper-string-parser": { 924 | "version": "7.18.10", 925 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", 926 | "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" 927 | }, 928 | "@babel/helper-validator-identifier": { 929 | "version": "7.19.1", 930 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 931 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" 932 | }, 933 | "@babel/helper-validator-option": { 934 | "version": "7.18.6", 935 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 936 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" 937 | }, 938 | "@babel/helpers": { 939 | "version": "7.19.0", 940 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", 941 | "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", 942 | "requires": { 943 | "@babel/template": "^7.18.10", 944 | "@babel/traverse": "^7.19.0", 945 | "@babel/types": "^7.19.0" 946 | } 947 | }, 948 | "@babel/highlight": { 949 | "version": "7.18.6", 950 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 951 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 952 | "requires": { 953 | "@babel/helper-validator-identifier": "^7.18.6", 954 | "chalk": "^2.0.0", 955 | "js-tokens": "^4.0.0" 956 | } 957 | }, 958 | "@babel/parser": { 959 | "version": "7.19.1", 960 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", 961 | "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==" 962 | }, 963 | "@babel/template": { 964 | "version": "7.18.10", 965 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", 966 | "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", 967 | "requires": { 968 | "@babel/code-frame": "^7.18.6", 969 | "@babel/parser": "^7.18.10", 970 | "@babel/types": "^7.18.10" 971 | } 972 | }, 973 | "@babel/traverse": { 974 | "version": "7.19.1", 975 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz", 976 | "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==", 977 | "requires": { 978 | "@babel/code-frame": "^7.18.6", 979 | "@babel/generator": "^7.19.0", 980 | "@babel/helper-environment-visitor": "^7.18.9", 981 | "@babel/helper-function-name": "^7.19.0", 982 | "@babel/helper-hoist-variables": "^7.18.6", 983 | "@babel/helper-split-export-declaration": "^7.18.6", 984 | "@babel/parser": "^7.19.1", 985 | "@babel/types": "^7.19.0", 986 | "debug": "^4.1.0", 987 | "globals": "^11.1.0" 988 | } 989 | }, 990 | "@babel/types": { 991 | "version": "7.19.0", 992 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", 993 | "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", 994 | "requires": { 995 | "@babel/helper-string-parser": "^7.18.10", 996 | "@babel/helper-validator-identifier": "^7.18.6", 997 | "to-fast-properties": "^2.0.0" 998 | } 999 | }, 1000 | "@jridgewell/gen-mapping": { 1001 | "version": "0.1.1", 1002 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 1003 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 1004 | "requires": { 1005 | "@jridgewell/set-array": "^1.0.0", 1006 | "@jridgewell/sourcemap-codec": "^1.4.10" 1007 | } 1008 | }, 1009 | "@jridgewell/resolve-uri": { 1010 | "version": "3.1.0", 1011 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 1012 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" 1013 | }, 1014 | "@jridgewell/set-array": { 1015 | "version": "1.1.2", 1016 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 1017 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" 1018 | }, 1019 | "@jridgewell/sourcemap-codec": { 1020 | "version": "1.4.14", 1021 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 1022 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" 1023 | }, 1024 | "@jridgewell/trace-mapping": { 1025 | "version": "0.3.15", 1026 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", 1027 | "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", 1028 | "requires": { 1029 | "@jridgewell/resolve-uri": "^3.0.3", 1030 | "@jridgewell/sourcemap-codec": "^1.4.10" 1031 | } 1032 | }, 1033 | "abbrev": { 1034 | "version": "1.1.1", 1035 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 1036 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 1037 | }, 1038 | "ansi-styles": { 1039 | "version": "3.2.1", 1040 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1041 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1042 | "requires": { 1043 | "color-convert": "^1.9.0" 1044 | } 1045 | }, 1046 | "balanced-match": { 1047 | "version": "1.0.2", 1048 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1049 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 1050 | }, 1051 | "brace-expansion": { 1052 | "version": "2.0.1", 1053 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1054 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1055 | "requires": { 1056 | "balanced-match": "^1.0.0" 1057 | } 1058 | }, 1059 | "browserslist": { 1060 | "version": "4.21.4", 1061 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", 1062 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", 1063 | "requires": { 1064 | "caniuse-lite": "^1.0.30001400", 1065 | "electron-to-chromium": "^1.4.251", 1066 | "node-releases": "^2.0.6", 1067 | "update-browserslist-db": "^1.0.9" 1068 | } 1069 | }, 1070 | "caniuse-lite": { 1071 | "version": "1.0.30001407", 1072 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001407.tgz", 1073 | "integrity": "sha512-4ydV+t4P7X3zH83fQWNDX/mQEzYomossfpViCOx9zHBSMV+rIe3LFqglHHtVyvNl1FhTNxPxs3jei82iqOW04w==" 1074 | }, 1075 | "chalk": { 1076 | "version": "2.4.2", 1077 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1078 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1079 | "requires": { 1080 | "ansi-styles": "^3.2.1", 1081 | "escape-string-regexp": "^1.0.5", 1082 | "supports-color": "^5.3.0" 1083 | } 1084 | }, 1085 | "color-convert": { 1086 | "version": "1.9.3", 1087 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1088 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1089 | "requires": { 1090 | "color-name": "1.1.3" 1091 | } 1092 | }, 1093 | "color-name": { 1094 | "version": "1.1.3", 1095 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1096 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 1097 | }, 1098 | "commander": { 1099 | "version": "2.20.3", 1100 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1101 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 1102 | }, 1103 | "config-chain": { 1104 | "version": "1.1.13", 1105 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", 1106 | "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", 1107 | "requires": { 1108 | "ini": "^1.3.4", 1109 | "proto-list": "~1.2.1" 1110 | } 1111 | }, 1112 | "convert-source-map": { 1113 | "version": "1.8.0", 1114 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 1115 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 1116 | "requires": { 1117 | "safe-buffer": "~5.1.1" 1118 | } 1119 | }, 1120 | "debug": { 1121 | "version": "4.3.4", 1122 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1123 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1124 | "requires": { 1125 | "ms": "2.1.2" 1126 | } 1127 | }, 1128 | "editorconfig": { 1129 | "version": "0.15.3", 1130 | "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", 1131 | "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", 1132 | "requires": { 1133 | "commander": "^2.19.0", 1134 | "lru-cache": "^4.1.5", 1135 | "semver": "^5.6.0", 1136 | "sigmund": "^1.0.1" 1137 | }, 1138 | "dependencies": { 1139 | "semver": { 1140 | "version": "5.7.1", 1141 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1142 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1143 | } 1144 | } 1145 | }, 1146 | "electron-to-chromium": { 1147 | "version": "1.4.255", 1148 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.255.tgz", 1149 | "integrity": "sha512-H+mFNKow6gi2P5Gi2d1Fvd3TUEJlB9CF7zYaIV9T83BE3wP1xZ0mRPbNTm0KUjyd1QiVy7iKXuIcjlDtBQMiAQ==" 1150 | }, 1151 | "escalade": { 1152 | "version": "3.1.1", 1153 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1154 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" 1155 | }, 1156 | "escape-string-regexp": { 1157 | "version": "1.0.5", 1158 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1159 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 1160 | }, 1161 | "fs.realpath": { 1162 | "version": "1.0.0", 1163 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1164 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 1165 | }, 1166 | "gensync": { 1167 | "version": "1.0.0-beta.2", 1168 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1169 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" 1170 | }, 1171 | "glob": { 1172 | "version": "8.0.3", 1173 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", 1174 | "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", 1175 | "requires": { 1176 | "fs.realpath": "^1.0.0", 1177 | "inflight": "^1.0.4", 1178 | "inherits": "2", 1179 | "minimatch": "^5.0.1", 1180 | "once": "^1.3.0" 1181 | } 1182 | }, 1183 | "globals": { 1184 | "version": "11.12.0", 1185 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1186 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" 1187 | }, 1188 | "has-flag": { 1189 | "version": "3.0.0", 1190 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1191 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 1192 | }, 1193 | "inflight": { 1194 | "version": "1.0.6", 1195 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1196 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1197 | "requires": { 1198 | "once": "^1.3.0", 1199 | "wrappy": "1" 1200 | } 1201 | }, 1202 | "inherits": { 1203 | "version": "2.0.4", 1204 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1205 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1206 | }, 1207 | "ini": { 1208 | "version": "1.3.8", 1209 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1210 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" 1211 | }, 1212 | "js-beautify": { 1213 | "version": "1.14.6", 1214 | "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", 1215 | "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", 1216 | "requires": { 1217 | "config-chain": "^1.1.13", 1218 | "editorconfig": "^0.15.3", 1219 | "glob": "^8.0.3", 1220 | "nopt": "^6.0.0" 1221 | } 1222 | }, 1223 | "js-tokens": { 1224 | "version": "4.0.0", 1225 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1226 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1227 | }, 1228 | "jsesc": { 1229 | "version": "2.5.2", 1230 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1231 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" 1232 | }, 1233 | "json5": { 1234 | "version": "2.2.1", 1235 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 1236 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" 1237 | }, 1238 | "lru-cache": { 1239 | "version": "4.1.5", 1240 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 1241 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 1242 | "requires": { 1243 | "pseudomap": "^1.0.2", 1244 | "yallist": "^2.1.2" 1245 | } 1246 | }, 1247 | "minimatch": { 1248 | "version": "5.1.0", 1249 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", 1250 | "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", 1251 | "requires": { 1252 | "brace-expansion": "^2.0.1" 1253 | } 1254 | }, 1255 | "ms": { 1256 | "version": "2.1.2", 1257 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1258 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1259 | }, 1260 | "node-releases": { 1261 | "version": "2.0.6", 1262 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", 1263 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" 1264 | }, 1265 | "nopt": { 1266 | "version": "6.0.0", 1267 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", 1268 | "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", 1269 | "requires": { 1270 | "abbrev": "^1.0.0" 1271 | } 1272 | }, 1273 | "once": { 1274 | "version": "1.4.0", 1275 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1276 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1277 | "requires": { 1278 | "wrappy": "1" 1279 | } 1280 | }, 1281 | "picocolors": { 1282 | "version": "1.0.0", 1283 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1284 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1285 | }, 1286 | "proto-list": { 1287 | "version": "1.2.4", 1288 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", 1289 | "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" 1290 | }, 1291 | "pseudomap": { 1292 | "version": "1.0.2", 1293 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 1294 | "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" 1295 | }, 1296 | "safe-buffer": { 1297 | "version": "5.1.2", 1298 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1299 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1300 | }, 1301 | "semver": { 1302 | "version": "6.3.0", 1303 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1304 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 1305 | }, 1306 | "sigmund": { 1307 | "version": "1.0.1", 1308 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 1309 | "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==" 1310 | }, 1311 | "supports-color": { 1312 | "version": "5.5.0", 1313 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1314 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1315 | "requires": { 1316 | "has-flag": "^3.0.0" 1317 | } 1318 | }, 1319 | "to-fast-properties": { 1320 | "version": "2.0.0", 1321 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1322 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" 1323 | }, 1324 | "update-browserslist-db": { 1325 | "version": "1.0.9", 1326 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", 1327 | "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", 1328 | "requires": { 1329 | "escalade": "^3.1.1", 1330 | "picocolors": "^1.0.0" 1331 | } 1332 | }, 1333 | "wrappy": { 1334 | "version": "1.0.2", 1335 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1336 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1337 | }, 1338 | "yallist": { 1339 | "version": "2.1.2", 1340 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 1341 | "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" 1342 | } 1343 | } 1344 | } 1345 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cloudflare-main-challenge-deobfuscator", 3 | "version": "1.0.0", 4 | "description": "Deobfuscator of the main cloudflare script", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node index.js" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/rastvl/cloudflare-main-challenge-deobfuscator.git" 13 | }, 14 | "keywords": [], 15 | "author": "", 16 | "license": "ISC", 17 | "bugs": { 18 | "url": "https://github.com/rastvl/cloudflare-main-challenge-deobfuscator/issues" 19 | }, 20 | "homepage": "https://github.com/rastvl/cloudflare-main-challenge-deobfuscator#readme", 21 | "dependencies": { 22 | "@babel/core": "^7.19.1", 23 | "@babel/generator": "^7.19.0", 24 | "@babel/parser": "^7.19.1", 25 | "@babel/traverse": "^7.19.1", 26 | "@babel/types": "^7.19.0", 27 | "js-beautify": "^1.14.6" 28 | } 29 | } 30 | --------------------------------------------------------------------------------